A new feature was added to SU6 to allow apps listed on the MarketPlace to circumvent the IceLib license requirements for custom applications. We added this new feature to make it easier to sell applications on the MarketPlace so a customer wouldn't have purchase an IceLib license on top of purchasing your application. In order to take advantage of this new feature, you need to be running a server with SU6 and on the application side be using either ICWS or IceLib SU6.
When a customer purchases your application from the MarketPlace, they can add your app's feature license to their CIC license. Using that license key in conjunction with an application code when you log in, CIC will let the application log even if there isn't an Icelib or ICWS license on the server.
When you log into the MarketPlace and go to Account Management, you have the ability to generate an IceLib key and start a new application submission.
Clicking this button will bring you to a new form where you can fill out the name of your application. When you click save you will be given a new license and icelib key. Later after your application has been tested and is ready for release you can go back and edit the listing in the MarketPlace to fill in the rest of the details for the application.
Unfortunatly, at the time of writing this blog entry, it isn't possible to create a license file with this new license key enabled, so development servers will still need the IceLib feature license in place.
For applications to connect without the icelib license, there are two new properties on the SessionSettings object in IceLib starting in SU6 called MarketPlaceApplicationCode and MarketPlaceApplicationLicenseName. If you try this and you don't see them on the SessionSettings object, make sure to update your IceLib binaries to SU6. Set the value from that popup to MarketPlaceApplicationCode and set the value of MarketPlaceApplicationLicenseName to your license name as shown in lines 4 and 5 below.
1
2
3
4
5
6
7
8
9
10
11
12
Session iceLibSession = new Session();
SessionSettings sessionSettings = new SessionSettings();
sessionSettings.MarketPlaceApplicationCode = "FLM3qBoWh3uFUq08RvEordwhT68JiRCvitWup170Mig=";
sessionSettings.MarketPlaceApplicationLicenseName = "I3_FEATURE_MARKETPLACE_EXT_MYAPP";
sessionSettings.ApplicationName = "My Marketplace Application";
HostSettings hostSettings = new HostSettings(new HostEndpoint("morbo"));
StationSettings stationSettings = new StationlessSettings();
AuthSettings authSettings = new WindowsAuthSettings();
iceLibSession.Connect(sessionSettings, hostSettings, authSettings, stationSettings);
We have a similar option when connecting with ICWS. When setting up the JSON object with the connection information, you can add the marketPlaceApplicationLicenseName and marketPlaceApplicationCode properties to the object as shown in lines 22 and 23 below.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function connect() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && (xmlhttp.status >= 200 && xmlhttp.status < 300)) {
console.log('connect successful');
}
else if (xmlhttp.readyState == 4 && (xmlhttp.status >= 300)) {
console.error('unable to connect');
}
};
xmlhttp.open("POST", "http://morbo.dev2000.com:8018/icws/connection", true);
xmlhttp.setRequestHeader("Accept-Language", "en-us");
xmlhttp.withCredentials = true;
var connectData = {
"__type": "urn:inin.com:connection:icAuthConnectionRequestSettings",
"applicationName": "My Marketplace Application",
"userID": "kevin.glinski",
"password": "ININ1234",
"marketPlaceApplicationLicenseName": "I3_FEATURE_MARKETPLACE_EXT_MYAPP",
"marketPlaceApplicationCode": "FLM3qBoWh3uFUq08RvEordwhT68JiRCvitWup170Mig="
};
xmlhttp.send(JSON.stringify(connectData));
}
And that's it. After following theses steps, your customers running CIC SU6 or later will not need the IceLib or ICWS licenses in order to use your application. The recommendation is to run a server version at or later than your IceLib version. If you are running IceLib SU6, you will be able to connect to a pre SU6 server using the new attributes, but they will just be ignored.